Uninterruptable overlay on a display

ABSTRACT

In some embodiments, a computer-implemented method includes detecting, by a first software application, a first window being displayed on a display of a host computing device, where the first window displays graphical content and is generated by a second software application. The method can further include capturing an image of the graphical content on the first window and generating a second window on the display of the host computing device, where the second window is configured as a top-most window on the display, such that subsequent application-level and system-level window pop-ups occur on a window layer below the second window. The method can further include displaying the captured image of the graphical content on the second window.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application is a non-provisional application and claims the benefitand priority of U.S. Provisional Application No. 62/435,378, filed onDec. 16, 2016, and titled “HAND-HELD INPUT DEVICE,” which is herebyincorporated by reference in its entirety for all purposes.

The following regular U.S. patent applications (including this one) arebeing filed concurrently, and the entire disclosure of the otherapplications are incorporated by reference into this application for allpurposes:

-   -   application Ser. No. 15/389,225, filed Dec. 22, 2016, entitled        “AUTOMATIC SELECTION OF A WIRELESS CONNECTIVITY PROTOCOL FOR AN        INPUT DEVICE”;    -   application Ser. No. 15/389,229, filed Dec. 22, 2016, entitled        “AUTOMATIC CONFIGURATION OF AN INPUT DEVICE BASED ON CONTEXTUAL        USAGE”; and    -   application Ser. No. 15/389,232, filed Dec. 22, 2016, entitled        “MODIFYING A HIGHLIGHTING FUNCTION ON A DISPLAY BASED ON        CONTENT”.

BACKGROUND

Slide-based presentations have been a mainstay in the office workplacefor decades. Technologies have evolved from early carousel slideprojectors and single-page transparency projectors to modern digitalpresentations using contemporary software such as PowerPoint®, Keynote®,Prezi®, Google Slides®, and the like.

Until recently, most presentations required at a person to remain tiedto the desktop or laptop computer operating the presentation software tomanually control the flow of the presentation (e.g., forwarding,pausing, or returning to a previous slide) with an input device (e.g.,computer mouse, touch pad, arrow keys, etc.). This can detrimentallyaffect the quality and dynamics of a good presentation as the presenteris unable to move about and fully engage with the audience. Even insituations where a second person operates the software and the presenteris free to move about the room, constantly having to remind the operatorto change slides can stifle continuity and may be distracting toviewers.

Newer developments include multi-function presentation devices (e.g.,hand-held input devices) that can allow the presenter to perform simplefunctions like slide advancement, laser pointing, and long range.However, many of these devices have non-intuitive or confusinginterfaces, cumbersome button arrangements, complicated programmingprotocols, or compatibility issues. Better hand-held input devices areneeded.

BRIEF SUMMARY

Some aspects of the invention include a method of operating presentationsoftware to prevent pop-ups, notifications, or other system messagingfrom appearing on a corresponding display to ensure an uninterrupteduser session for an improved presentation experience. In someembodiments, the computer-implemented method can include detecting afirst window being displayed on a display of a host computing device,capturing an image of the graphical content on the first window,generating a second window on the display of the host computing device,and displaying the captured image of the graphical content on the secondwindow. In some cases, the second window is configured as a top-mostwindow on the display, such that subsequent application-level andsystem-level window pop-ups occur on a window layer below the secondwindow.

In certain embodiments, a computer-implemented method includesdetecting, by a first software application, a first window beingdisplayed on a display of a host computing device, capturing, by thefirst software application, an image of the graphical content on thefirst window, generating, by the first software application, a secondwindow on the display of the host computing device, where the secondwindow is configured as a top-most window on the display, such thatsubsequent application-level and system-level window pop-ups occur on awindow layer below the second window, and displaying, by the firstsoftware application, the captured image of the graphical content on thesecond window. In some cases, the first window displays graphicalcontent, and the first window may be generated by a second softwareapplication.

The method may further include receiving input data from an inputdevice, the input data corresponding to a selection of the first window,receiving subsequent input data from the input device, and applying theinput data to the second application on the first window when the secondwindow is displayed as the top-most window on the display. In someembodiments, the method further includes causing, by the first softwareapplication, the second window to be transparent such that the firstwindow is visible when input data is received from the input device,capturing, by the first software application, an updated image of thegraphical content on the first window when the input data is no longerreceived from the input device for a threshold time, and displaying, bythe first software application, the captured updated image of thegraphical content on the second window.

The input data can further include data corresponding to a movement of acursor on the first window; and the method can further include changingan opacity of the transparent second window based on the movement of thecursor. In some cases, the opacity of the transparent second window canbe changed in an area around the cursor to highlight a correspondingarea of the graphical content on the on the first window. In certainaspects, the input data further includes data corresponding to amovement of a cursor on the first window, with the method furtherincluding changing an area around the cursor magnify a correspondingarea of the graphical content on the first window. In someimplementations, the input device can be at least one of a presentingdevice, a computer mouse, a keyboard, or a remote control. The image ofthe graphical content on the first window can be captured and displayedon the second window at a periodic rate when input data is not beingreceived, where the periodic rate can be between 25 frames-per-second(FPS) and 30 FPS, or other suitable rate, as would be understood by oneof ordinary skill in the art.

In some embodiments, a computer-implemented system for establishing awireless connection more a mobile input device includes one or moreprocessors and one or more non-transitory computer-readable storagemediums containing instructions configured to cause the one or moreprocessors to perform operations including detecting, by a firstsoftware application, a first window being displayed on a display of ahost computing device, capturing, by the first software application, animage of the graphical content on the first window, generating, by thefirst software application, a second window on the display of the hostcomputing device, where the second window is configured as a top-mostwindow on the display, such that subsequent application-level andsystem-level window pop-ups occur on a window layer below the secondwindow, and displaying, by the first software application, the capturedimage of the graphical content on the second window. In some aspects,the first window can display graphical content, and the first window canbe generated by a second software application.

In some embodiments, the one or more non-transitory computer-readablestorage mediums can further contain instructions configured to cause theone or more processors to perform operations including receiving inputdata from an input device, the input data corresponding to a selectionof the first window, receiving subsequent input data from the inputdevice, and applying the input data to the second application on thefirst window when the second window is displayed as the top-most windowon the display.

In further embodiments, the one or more non-transitory computer-readablestorage mediums further contain instructions configured to cause the oneor more processors to perform operations including causing, by the firstsoftware application, the second window to be transparent such that thefirst window is visible when input data is received from the inputdevice, capturing, by the first software application, an updated imageof the graphical content on the first window when the input data is nolonger received from the input device for a threshold time, anddisplaying, by the first software application, the captured updatedimage of the graphical content on the second window. The input data canfurther include data corresponding to a movement of a cursor on thefirst window. In some cases, the one or more non-transitorycomputer-readable storage mediums can further contain instructionsconfigured to cause the one or more processors to perform operationsincluding changing an opacity of the transparent second window based onthe movement of the cursor. The opacity of the transparent second windowmay be changed in an area around the cursor to highlight a correspondingarea of the graphical content on the on the first window.

In certain embodiments, a non-transitory computer-program producttangibly embodied in a machine-readable non-transitory storage mediumincludes instructions configured to cause one or more processors todetect, by a first software application, a first window being displayedon a display of a host computing device, capture, by the first softwareapplication, an image of the graphical content on the first window,generate, by the first software application, a second window on thedisplay of the host computing device, where the second window isconfigured as a top-most window on the display, such that subsequentapplication-level and system-level window pop-ups occur on a windowlayer below the second window, and display, by the first softwareapplication, the captured image of the graphical content on the secondwindow. In some cases, the first window can display graphical content,and the first window can be generated by a second software application.

In some embodiments, the instructions can be further configured to causeone or more processors to receive input data from an input device, theinput data corresponding to a selection of the first window, receivesubsequent input data from the input device, and apply the input data tothe second application on the first window when the second window isdisplayed as the top-most window on the display. In further embodiments,the instructions can be further configured to cause one or moreprocessors to cause, by the first software application, the secondwindow to be transparent such that the first window is visible wheninput data is received from the input device, capture, by the firstsoftware application, an updated image of the graphical content on thefirst window when the input data is no longer received from the inputdevice for a threshold time, and display, by the first softwareapplication, the captured updated image of the graphical content on thesecond window.

In some implementations, the input data can further includes datacorresponding to a movement of a cursor on the first window; and theinstructions can be further configured to cause one or more processorsto change an opacity of the transparent second window based on themovement of the cursor. In some cases, the opacity of the transparentsecond window may be changed in an area around the cursor to highlight acorresponding area of the graphical content on the on the first window.In some cases, the image of the graphical content on the first windowcan be captured and displayed on the second window at a periodic ratewhen input data is not being received. The input device can be at leastone of a presenting device, a computer mouse, a keyboard, or remotecontrol.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is set forth with reference to the accompanyingfigures.

FIG. 1 shows a mobile hand-held input device, according to certainembodiments.

FIG. 2 shows a mobile hand-held input device configured formulti-connectivity with a number of host devices, according to certainembodiments.

FIG. 3 is a simplified flow chart showing aspects of a method ofestablishing a wireless connection with a mobile input device, accordingto certain embodiments.

FIG. 4 is a flow chart showing aspects of a method for operating amobile hand-held input device with power saving features, according tocertain embodiments.

FIG. 5 shows aspects of an uninterruptable display, according to certainembodiments.

FIG. 6 shows aspects of configuring a hierarchy of displayed windows ona display, according to certain embodiments.

FIG. 7 is a simplified flowchart showing aspects of a method ofconfiguring a hierarchy of displayed windows on a computing device,according to certain embodiments.

FIG. 8A shows aspects of a highlighting function in a presentationapplication, according to certain embodiments.

FIG. 8B shows aspects of a zoom function in a presentation application,according to certain embodiments.

FIG. 9A shows the automatic configuration of an input device based oncontent of a display, according to certain embodiments.

FIG. 9B shows the automatic configuration of an input device based oncontent of a display, according to certain embodiments.

FIG. 10 is a simplified flow chart showing aspects of a method forautomatically configuring an input device based on the content of adisplay, according to certain embodiments.

FIG. 11 is a simplified flow chart showing aspects of a method formodifying a highlighting function based on content on a display,according to certain embodiments.

FIG. 12 is a simplified flow chart showing aspects of a method formodifying a color of a highlighting function based on content on adisplay, according to certain embodiments.

FIG. 13A shows aspects of a highlighting function in a presentationapplication, according to certain embodiments.

FIG. 13B shows aspects of detecting and highlighting a selectableelement on a display, according to certain embodiments.

FIG. 13C shows aspects of detecting and highlighting a selectableelement on a display, according to certain embodiments.

FIG. 14 shows aspects of detecting and highlighting sub-elements on adisplay, according to certain embodiments.

FIG. 15A shows aspects of determining a selectable element to highlighton a display, according to certain embodiments.

FIG. 15B shows aspects of determining a selectable element to highlighton a display, according to certain embodiments.

FIG. 16 shows a system for operating host computing device, according tocertain embodiments.

FIG. 17 shows a system for operating an input device, according tocertain embodiments.

DETAILED DESCRIPTION

Aspects of the present disclosure relate generally to input devices, andin particular to hand-held input devices for controlling aspects of apresentation, according to certain embodiments.

In the following description, various embodiments of a hand-held inputdevice will be described. For purposes of explanation, specificconfigurations and details are set forth in order to provide a thoroughunderstanding of the embodiments. However, it will be apparent to oneskilled in the art that certain embodiments may be practiced orimplemented without every detail disclosed. Furthermore, well-knownfeatures may be omitted or simplified in order to prevent anyobfuscation of the novel features described herein.

Some aspects of the invention include a method of operating presentationsoftware to prevent pop-ups, notifications, or other system messagingfrom appearing on a corresponding display to ensure an uninterrupteduser session for an improved presentation experience. In someembodiments, the computer-implemented method can include detecting afirst window being displayed on a display of a host computing device,capturing an image of the graphical content on the first window,generating a second window on the display of the host computing device,and displaying the captured image of the graphical content on the secondwindow. In some cases, the second window is configured as a top-mostwindow on the display, such that subsequent application-level andsystem-level window pop-ups occur on a window layer below the secondwindow.

FIG. 1 shows a mobile hand-held input device 100, according to certainembodiments. Mobile hand-held input device (“input device”) 100 caninclude housing 110, input interface 120, and receiver 130. Housing 110is shown having an oval shaped cross-section and a rounded rectangularshape in top plan view to make for an ergonomically formed input devicethat can be comfortably held, manipulated, and interfaced by a user'shand. Housing 110 can be formed of any suitable materials includingmetal (e.g., aluminum, stainless steel, alloy, etc.), plastic, rubber,or hybrid material, as would be understood by one of ordinary skill inthe art. Housing 110 can further include non-slip features to improve auser's grip on input device 100, such as non-slip portion 140, which canbe comprised of any suitable non-slip material (e.g., rubber, plastic,knurled metal, etc.). Input device 100 can also be implemented in anyform factor (e.g., shape, size, etc.) including wearables (e.g., smartwatches, eye wear, etc.), smart phones, or other preferably mobiledevices. In some embodiments, input device 100 can be operated by system1700 of FIG. 17.

Input interface 120 can include any suitable user interface including,but not limited to, one or more buttons, touch and/or motion sensors,user controls (e.g., joystick, pointing stick, trackball, etc.), amicrophone to facilitate voice recognition and command recognition, orthe like. One of ordinary skill in the art would understand the manyvariations, modifications, and alternative embodiments thereof.

Referring to FIG. 1, input interface 120 can include top button 122,center button 124, and bottom button 126, according to certainembodiments. The arrangement of buttons 122-126 can be advantageous asit may provide unmistaken navigation and control. For example, centerbutton 124 is larger than top button 122 and bottom button 126, allowinga user to easily determine which button is being interfaced withoutrequiring visual confirmation. In some cases, the surface of the buttonscan be modified to have different surface shapes (e.g., convex,concave), different materials (e.g., rubber, plastic, metal, etc.),different surface types (e.g., smooth, rough, patterned), or the like.Each button can be user programmable (or maintain factory defaultsettings) to include any number of functions, which may be fixed (e.g.,remain set until reprogrammed) or configurable to change dynamicallybased on contextual usage. For instance, a button can be dynamically andautomatically programmed to generate play/pause commands when aparticular slide in presentation software includes an embedded audio orvideo link. In another scenario, one or more buttons can beautomatically configured to control scrolling when a spreadsheetapplication is running, or provide a magnifying feature when certainfont sizes (e.g., less than 10 pt.) are included on a slide. One ofordinary skill in the art would understand the many variations,modifications, and alternative embodiments thereof.

In certain embodiments, top button 122 can be configured to be a cursorbutton such that a click can function as a mouse left click, andpressing and holding can control cursor movement on a correspondingdisplay or highlighting functions. Center button 124 can be configuredto functions as a “Next” button such that a click generates a “nextslide” command and pressing and holding can perform a highlightingfunction, or alternatively volume control, scrolling, panning, customkeystrokes, or other suitable function. Bottom button 126 can beconfigured to function as a “Back” button such that a click generates a“previous slide” command and pressing and holding can perform a focusscreen function, or alternatively volume control, scrolling, panning,custom keystrokes, or other suitable function. In some embodiments,center button 124 can function as a “left click” button, double clickingcenter button 124 may switch to a highlighting mode, andpressing/holding center button 124 may move a cursor or implement ahighlighting function, as further discussed below. In someimplementations, top button 122 can be figured to generate a next slidecommand in response to a single one click, or “fast forward” throughslides and may be reprogrammed to blank the screen, perform volume,scrolling, and/or panning controls, or generate a custom keystroke inresponse to a press and hold command. In some embodiments, bottom button126 can be configured to perform a “previous slide” command in responseto a single click, or “fast backward” through blank the screen, performvolume, scrolling, and/or panning controls, or generate a customkeystroke in response to a press and hold command. One of ordinary skillin the art would understand the many variations, modifications, andalternative embodiments thereof.

In some embodiments, a movement of the input device can be configured tocontrol certain features on a display. Input device movement can betracked in three dimensions (e.g., x, y, z dimensions in Cartesiancoordinate system) using one or more accelerometers, gyroscopes, orother inertial measurement unit. In some cases, an upward/downward(e.g., z-direction) movement may control a volume of a media player,scrolling a document, adjusting contrast or brightness on an image, orthe like. Alternatively or additionally, a side-to-side movement (e.g.,x-direction) may control a media playback point or cycle between modesof operation (e.g., audio/mute, enter/exit document (e.g., navigateembedded spreadsheet), mono/stereo playback, etc.). One of ordinaryskill in the art would understand the many variations, modifications,and alternative embodiments thereof that utilize three-dimensional (3D)movement of the input device to control content on a display.

Receiver 130 can be a wireless transceiver that can be communicativelycoupled to input device 100. Receiver 130 can enable bidirectionalcommunication between input device 100 and a host computing device (notshown), such as a desktop computer, laptop computer, tablet computer, orthe like. In some embodiments, receiver 130 can be a dongle having awireless communication protocol operating at 2.4 Ghz. Alternatively oradditionally, receiver 130 can operate at other frequencies, as would beunderstood by one of ordinary skill in the art. Receiver 130 can beconfigured to fit inside a cavity within housing 110, as shown in FIG.1, and may include a strap 132, a body 134, and insert 136. Strap 132 iscoupled to the receiver body 134 and can protrude from housing 110 whenreceiver 130 is fully inserted in the cavity to provide a method ofretrieving receiver 130 from the cavity. Insert 136 is shown as auniversal serial bus (USB)-C type interface to couple to a port for ahost computing device, however any suitable type of interface (e.g.,parallel/serial, FireWire, etc.) can be used.

Multi-Connectivity

In some embodiments, a mobile hand-held input device may be configuredto couple with any type of host computing device having any suitableoperating system and wireless communications protocol, as furtherdiscussed below. In some cases, a communicative connection hierarchy maybe established where the input device will opt to connect to a firsthost computing device (e.g., using receiver 130 (e.g., dongle) as thewireless communication protocol) over a second host computing device(e.g., using BLE or another standard communication protocol), when thefirst device is available to connect to. When the first host computingdevice is not detected or is unavailable, the input device cancommunicatively connect to the second host computing device. In someimplementations, when the input device is connected to the second hostcomputing device, the input device will automatically switch itscommunicative connection from the second host computing device to thefirst host computing device as soon as it detects that the first hostcomputing device is available for connection. Aspects of theseconnectivity hierarchy concepts are presented below, for example, withrespect to FIGS. 2-4. It should be understood that although two devicesare discussed in many of the embodiments of the present disclosure, theinput device can be configured to connect to three or more hostcomputers in any suitable connectivity hierarchy scheme (e.g.,automatically selecting a first host computer or wireless connectiontype over a second host computer or wireless connection type, andselecting the second host computer or wireless connection type over athird host computer or wireless connection type, etc.). One of ordinaryskill in the art would understand the many variations, modifications,and alternative embodiments thereof.

FIG. 2 shows a mobile hand-held input device 200 with multi-connectivitycapabilities, according to certain embodiments. Input device 200 iscapable of being communicatively coupled to any of receiver 230 (coupledto host computer 210) or host computing devices 220, 240, or 250.Receiver 230 can be a wireless transceiver operating at 2.4 GHz or othersuitable frequency. Host computing devices 210, 220, 240, and 250 areshown as a PC-based laptop computer, a desktop computer, a tabletcomputer, and a Mac-based laptop computer, respectively, but can be anysuitable computing device that may additionally include a netbook, asmart phone, a smart wearable (e.g., smart watch, glasses), or the like.Host computing devices 210, 220, 240, and 250 may operate any suitableoperating system including, but not limited to Windows®, macOS®, Linux®,Android®, iOS®, or the like. Each host device can operate any suitablewireless communication protocol including, but not limited to,Bluetooth®, BLE, ZigBee®, ZWire®, Wi-Fi (IEEE 802.11), Thread, Logi®protocols, or the like, as would be understood by one of ordinary skillin the art. Referring to FIG. 2, host computing device 210 is using aLogi® proprietary 2.4 GHz wireless communication protocol, and hostcomputing devices 220, 240, and 250 are using BLE (operating at 2.4GHz).

In some embodiments, input device 200 can have two or more wirelesscommunication channels. In the previous example, a single channel canswitch between host computing devices and corresponding wirelesscommunication protocols based on a preference hierarchy (furtherdiscussed below in FIGS. 3-4). Alternatively or additionally, anadditional channel can be used to remain communicatively coupled to oneor more additional devices. In such cases, input device functionality(e.g., cursor movement, button control, etc.) can be limited to a singlehost computing device at a time. One advantage of simultaneousmulti-host connectivity is the ability to switch between host computingdevices very quickly (e.g., 10 ms or less) because input device 200 doesnot have to expend any time or resources reestablishing a wirelessconnection with the target host computing device.

In some implementations, the connection hierarchies described above canbe user programmable. For example, a factory default setting mayprioritize receiver 230 as the primary choice for establishing awireless connection, followed by BLE or other suitable wirelesscommunication protocol. A user can choose to switch prioritize BLE overreceiver 230, or another communication protocol over both receiver 230and BLE. One of ordinary skill in the art would understand the manyvariations, modifications, and alternative embodiments thereof.

Alternatively or additionally, switching between host computers can beinitiated by a movement and/or orientation of input device 200. Inputdevice 200 may include one or more accelerometers, gyroscopes, or othersuitable inertial measurement unit (IMU)-based system to detect saidmovement and/or orientation, as shown and described below with respectto FIG. 10. In some embodiments, pointing input device 200 in thedirection of a host computing device causes input device 200 to switchto that particular host computing device being pointed at. In suchcases, the location of each host computing device can be determinedbased characteristics of the corresponding wireless communicationprotocol (e.g., signal strength). In some cases, a user may manually setthe location of each host computing device by orienting input device 200towards a host computing device and associating the orientation data(e.g., the direction that input device 200 is facing) with eachparticular host computing device. The user can then point input device200 at the target host computing device and initiate the switch (e.g.,in combination with a particular button press). Alternatively, a “flow”type configuration between host computing devices (e.g., switchingbetween two presentations operating on different host computers) can beestablished as described in U.S. patent application Ser. No. 15/226,770.One of ordinary skill in the art would understand the many variations,modifications, and alternative embodiments thereof.

FIG. 3 is a simplified flow chart showing aspects of a method 300 forestablishing a wireless connection with a mobile input device, accordingto certain embodiments. Method 300 (as well as methods 400, 700, and1000-1200) can be performed by processing logic that may comprisehardware (circuitry, dedicated logic, etc.), software operating onappropriate hardware (such as a general purpose computing system or adedicated machine), firmware (embedded software), or any combinationthereof. In certain embodiments, method 300 can be performed byprocessor 1710 of system 1700, as shown and described below with respectto FIG. 17.

At step 310, method 300 can include searching for receiver 230 having anactive and available first wireless communication protocol. Receiver 230can be coupled to any suitable host computing device including any oneof a desktop computer, laptop computer, tablet computer, smart phone,smart wearable, or the like, as further described above. In someembodiments, receiver 230 can be a dongle operating at 2.4 GHz, or othersuitable frequency. Step 310 can further include determining whetherreceiver 230 is available for connection. In some cases, receiver 230may be paired to a different input device, making receiver 230unavailable for connection with input device 200.

When receiver 230 is detected (step 320), method 300 can includeautomatically connecting input device 200 to receiver 230 (step 330).When receiver 230 is not detected (step 320), method 300 can includesearching for a host computer having an active and available secondwireless communication protocol (step 340). In some cases, input device200 can continue to continuously or periodically search for receiver 230(e.g., check for receiver 230 availability every 100 ms, 1 sec, 10 sec,or any suitable amount of time). Alternatively or additionally, inputdevice 200 can search for receiver 230 availability each time a userinput is received by input device 200. For example, each time a userpresses a button (e.g., top button 122), or a subset thereof (e.g.,every 10^(th) user input). In some cases, the first wirelesscommunication protocol can be different than the second wirelesscommunication protocol. The second wireless communication protocol canbe any one of Bluetooth®, BLE, ZigBee®, ZWire®, Wi-Fi (IEEE 802.11),Thread, or the like, as would be understood by one of ordinary skill inthe art.

At step 350, method 300 can include connecting input device 200 to thehost computer having the second wireless communication protocol whilereceiver 230 is not detected (or available for connection). At step 360,method 300 can include continuing to search for receiver 230availability while input device 200 is connected to the host computerhaving the second wireless communication protocol. At step 370, whenreceiver 230 remains undetected and/or unavailable for connectivity,method 300 can include continuing to search for receiver 230availability while input device 200 is connected to the host computerhaving the second wireless communication protocol (step 360). At step370, when receiver 230 is detected and is available for connection,method 300 can include automatically switching the wireless connectionfor input device 200 from the host computer having the second wirelesscommunication protocol to receiver 230 (step 330).

It should be appreciated that the specific steps illustrated in FIG. 3provide a particular method 300 for establishing a wireless connectionwith a mobile input device, according to certain embodiments. Othersequences of steps may also be performed according to alternativeembodiments. For example, alternative embodiments may perform the stepsoutlined above in a different order. Moreover, the individual stepsillustrated in FIG. 3 may include multiple sub-steps that may beperformed in various sequences as appropriate to the individual step.

Furthermore, additional steps may be added or removed depending on theparticular applications. For example, some implementations can includereceiving an input to power-on input device 200, switching anoperational mode of input device 200 from a low-power sleep-mode to anactive-mode in response to receiving the user input, and switching theoperational mode from the active-mode to the low-power-mode in responseto determining that (1) the receiver and the second type of wirelesscommunication protocol is not detected, (2) no inputs are received onthe mobile input device for a threshold time (e.g., 1 min, 5 min, 30min, or any suitable time frame), (3) the connection to the receiver islost and the second type of wireless communication protocol is notdetected, or (4) the connection to the second type of wirelesscommunication protocol is lost and the receiver is not detected. Inanother example, method 300 can further include receiving a user inputon the mobile input device when an operational mode of the mobile inputdevice is a low-power sleep mode, where the user input corresponds toone or more human interface device (HID) commands, and in response toreceiving the user input when the mobile input device is in the sleepmode, switching the operational mode from the sleep mode to anactive-mode, and generating the one or more corresponding HID commands.

In further embodiments, method 300 can include providing a hapticfeedback on the mobile input device when the mobile input devicesconnects with the receiver or the host computer having the secondwireless communication protocol. The haptic feedback can be a first typeof haptic feedback (e.g., a first pulse pattern and/or frequency) whenthe mobile input device connects with receiver 230, and the hapticfeedback can be a second type of haptic feedback (e.g., e.g., a firstpulse pattern and/or frequency) when input device 200 connects with thehost computer having the second wireless communication protocol. One ofordinary skill in the art would recognize and appreciate manyvariations, modifications, and alternatives of method 300.

FIG. 4 shows a flow chart showing aspects of a method 400 for operatinga mobile hand-held input device with power saving features, according tocertain embodiments. In some embodiments, method 400 can be performed byprocessor 1710 of system 1700, as shown and described below with respectto FIG. 17.

At step 410, input device 200 can be in a sleep mode of operation. Thesleep mode can be a low power state of operation that uses less powerthan when input device 200 is in a normal mode of operation. In thesleep mode, one or more modules, functions, circuits, etc., may be shutdown or placed in a low power state. At step 420, input device 200switches to a normal mode of operation (e.g., all modules, functions,and circuits return to normal operating state), or “On Mode” in responseto receiving an input signal (e.g., button press, touch sensor input,etc.) on input device 200.

In some embodiments, the user input (e.g., button press) can be saved ina memory buffer and sent to a host computing device after input device200 establishes a connection. For example, a user input (e.g., buttonpress for a “next slide” function in a slide presentation application)can perform two functions: operate to return input device 200 from asleep mode to a normal mode of operation, and perform the intendedfunction (e.g., issue a “next slide” command) with a single buttonclick.

At step 425, input device 200 can attempt to communicatively connect toa new receiver 230 (i.e., not previously known or connected to) for afirst threshold timeout period, followed by BLE advertising for a secondthreshold timeout period, in response to either receiving a particularcombination of user inputs for a third threshold timeout period (e.g.,simultaneously holding two or more buttons for 1 second or more), orwhen no known receiver is associated with input device 200 (step 440).In this example, BLE is the secondary wireless communication protocol,but any suitable communication protocol can be used (e.g., Bluetooth®,ZigBee®, ZWire®, Wi-Fi (IEEE 802.11), Thread, Logi® protocols, etc.). Insome embodiments, the first threshold time can be 1 s and the secondthreshold time can be 3 min, however other time intervals can be used,as would be understood by one of ordinary skill in the art. Step 425 canbe reached from both sleep mode (step 410) and “On Mode” (step 420).When no connection is available from either the new receiver or from BLEfor the threshold timeout period (e.g., 3 min), input device 200 canreturn to sleep mode (step 410).

At step 430, input device 200 attempts to connect (e.g., sends aconnection request) to a known pre-paired receiver. If the pre-pairedreceiver is available, input device 200 establishes a communicativeconnection with it (step 450). Once connected, if the connection withthe receiver is subsequently lost or out of range, attempts atreconnection can occur for a period of time (e.g., 1 s) before returninginput device 200 to a sleep mode (step 410). Alternatively oradditionally, if no user inputs (e.g., clicks on a button) are receivedfor a period of time (e.g., 30 min), input device 200 can return to asleep mode (step 410). If a user input is received on input device 200after losing connection with receiver 230, then input device 200 can bereset in BLE (or other suitable communication protocol) if available.

At step 450, in response to receiving a particular combination of userinputs (e.g., simultaneously holding two or more buttons for 1 second ormore), input device 200 can attempt to communicatively connect to a newreceiver 230 (i.e., not previously known or connected to) for a firstthreshold timeout period, followed by BLE advertising for a secondthreshold timeout period (step 470) When no connection is available fromeither the new receiver or from BLE for the threshold timeout period(e.g., 3 min), input device 200 can return to sleep mode (step 410).

Referring back to step 430, if a known pre-paired receiver is notcurrently available, input device 200 searches for a known BLE hostcomputing device (step 455). As discussed above, it should be understoodthat any suitable wireless communication protocol can be used in placeof BLE. Furthermore, references to the pre-paired receiver should beunderstood to mean that the receiver is coupled to and in electroniccommunication with a host computing device. At step 455, if no known BLEhost computing device is available, input device 200 can go back intosleep mode (step 410). If a known BLE host computing device isavailable, input device 200 can attempt to connect to it at any suitabletime interval while still checking for connection availability with theknown pre-paired receiver (step 460). For example, input device 200 cantry to connect to the BLE host computing device for 5 seconds followedby an attempted connection to the known pre-paired receiver for 1second.

At step 460, once connected to the BLE host computing device, if theconnection is subsequently lost or out of range, input device 200 canattempt to reconnect for a period of time (e.g., 5 sec) before returninginput device 200 to the sleep mode (step 410). Alternatively oradditionally, if the BLE host computing device is not reachable for aperiod of time (e.g., 5 sec), the known pre-paired receiver is notreachable for a period of time (e.g., 1 sec), if the connection to theknown pre-paired receiver is lost or out of range, or if no user inputis received for a period of time (e.g., 30 min), then input device 200can return to sleep mode (step 410).

Referring again to step 460, in some embodiments, after each user inputon input device 200 (or other interval of user inputs), input device 200can ping the known pre-paired receiver between sending BLE packets (step480), as would be understood by one of ordinary skill in the art. Whenthe known pre-paired receiver becomes available, input device 200 candisconnect from the BLE host and connect to the known pre-pairedreceiver (step 490).

In response to a special user input condition (e.g., simultaneous inputsof two or more buttons on input device 200) from either of steps 460,480, 485, or 490, input device 200 can attempt to communicativelyconnect to a new receiver (i.e., not previously known or connected to)for a first threshold timeout period, followed by BLE advertising for asecond threshold timeout period (step 485), as similarly described abovewith respect to step 425. At step 485, if no connection is available fora period of time (e.g., 3 min), then input device 200 can return tosleep mode (step 410). Referring back to step 490, if the connectionwith the pre-paired receiver becomes lost or out of range, input device200 can attempt reconnection for a period of time (e.g., 1 sec) orotherwise return to sleep mode (step 410). Alternatively oradditionally, if no user input is received for a period of time (e.g.,30 min), then input device 200 can return to sleep mode (step 410).

It should be appreciated that the specific steps illustrated in FIG. 4provide a particular method 400 for operating mobile hand-held inputdevice 200 with power saving features, according to certain embodiments.Other sequences of steps may also be performed according to alternativeembodiments. For example, alternative embodiments may perform the stepsoutlined above in a different order. Moreover, the individual stepsillustrated in FIG. 4 may include multiple sub-steps that may beperformed in various sequences as appropriate to the individual step.Furthermore, additional steps may be added or removed depending on theparticular application of method 400. One of ordinary skill in the artwould recognize and appreciate many variations, modifications, andalternatives of method 400.

Presentation Enhancements—do not Disturb Feature

Some aspects of the invention include a method of operating software toprevent pop-ups, notifications, or other system messaging from appearingon a corresponding display to ensure an uninterrupted user session foran improved presentation experience. The following non-limitingembodiments present various implementations of this concept.

FIG. 5 shows aspects of an uninterruptable display 500, according tocertain embodiments. Display 500 can be operated by any suitable hostcomputing device (not shown), such as a desktop computer, laptopcomputer, tablet computer, or the like, as would be understood by one ofordinary skill in the art. In some embodiments, display 500 and thesoftware that operates the uninterruptable operation of thecorresponding presentation software can be operated by system 1600 ofFIG. 16.

Display 500 shows an uninterruptable image 510 of a slide that can beoperated by any suitable presentation software such as PowerPoint®,Keynote®, Prezi®, Google Slides®, or the like. A blocked pop-upnotification 520 is shown in FIG. 5, but is not actually visible ondisplay 500. Image 510 can be associated with any displayed image and isnot limited to presentation software. For instance, image 510 may beassociated with a webpage, word processing software, spreadsheetsoftware, or the like. One of ordinary skill in the art would understandthe many variations, modifications, and alternative embodiments thereof.

It can be particularly advantageous to have an uninterruptable displayduring a live presentation. Interruptions caused by system orapplication level pop-up messages can distract an audience,detrimentally affect the effectiveness and continuity of a speaker'spresentation, or even cause personal information (e.g., personal emailnotification) to be displayed in a public venue. In some embodiments, anuninterruptable display is achieved by operating software that cancapture an image of the display generated by presentation software andplacing it on an overlay configured to reside on a top-most displaylayer that is higher than all other layers, including system-levelpop-ups or notifications. The overlay software seamlessly integrateswith any system and does not interfere with any operating system (OS)settings, other concurrently running software applications, or otheroperations, which may differ from one machine to the next. In someembodiments, an image of the presentation software display can becaptured and overlaid at 25-30 frames per second (fps) to capture video,GIFs, etc., as further discussed below. In some embodiments, theuninterruptable display feature can be toggled by enabling/disabling auser selectable “do not disturb” feature, as further discussed below.

FIG. 6 shows aspects of configuring a hierarchy of displayed windows 610on a display 600, according to certain embodiments. Windows 610 includesoperating system (OS) desktop window 620, presentation window 630,applications notification window 640, system notification window 650,and overlay window 660. In the particular arrangement of FIG. 6, overlay660 is configured over system notification window 650, applicationsnotification window 640, presentation window 630, and desktop window620, in that order. Other window hierarchies are possible and somewindows may not be present, additional window layers may be added, etc.,as would be understood by one of ordinary skill in the art. FIG. 6 canbe operated by aspects of system 1600 of FIG. 16.

In certain embodiments, the OS manages the various window layers andorders them on a corresponding display according to a predeterminedhierarchy, as discussed above. In some embodiments, transparent overlaywindow (“overlay”) 660 can be positioned at the highest level in thehierarchy. Notifications (e.g., system notification window 650,application notification window 640, etc.) are typically configured at ahigher priority than presentation window 630 (or other softwareapplication window), to allow for pop-ups and other notifications to bevisible, but lower than overlay 660. In some cases, overlay 660 cantransmit input events (e.g., keyboard and mouse inputs) to the “focused”presentation application, allowing the user to interface with (e.g.,apply user inputs) to any application below overlay 660.

In certain embodiments, the overlay software can perform severalfunctions including highlighting functions (further discussed below),hiding notifications (as mentioned above), and providing additionalrelevant information (e.g., current battery levels, etc.—as furtherdiscussed below). With respect to hiding notifications, the overlaysoftware can set overlay 660 as opaque to hide any underlyingnotifications. In order to show presentation content (e.g., slides) andhide notifications at the same time, overlay software copies (“grabs” or“captures”) the content of the presentation window and displays it onoverlay 660. This sharing of content from one window to another canoccur at any suitable frequency. In the event that video or rapidlychanging images are presented, the frequency should be high enough suchthat the images appear continuous with no pauses or jittering from aviewer perspective (typically about 25-30 fps).

Capturing display data at high fps rates can utilize considerableprocessing and image rendering power, which may cause certain processes(e.g., cursor movement) to appear sluggish or discontinuous on certainsystems. Similarly, capturing a rapidly moving a cursor and/orperforming operations including highlighting, magnifying, etc. (furtherdiscussed below) can also tax processing resources and cause visiblejitter or delay on overlay 660 on certain systems. In certainembodiments, software operating overlay 660 can detect when a user isperforming a particular function that may cause sluggishness (e.g.,moving a cursor), cease capturing content from presentation window 630during that period of time, and continue to display the most recentlycaptured image on overlay 660 during that period of time. After theparticular function stops, the 25 fps capture and display process cancontinue as usual. For faster systems, users may opt to disable thisprocess such that the capture and display process continues regardlessof any ongoing cursor movement, highlighting functions, or the like.

Thus, in certain embodiments, when presentation software is launched(e.g., in full screen), application or system notifications can appearon the screen when the “do not disturb” mode is disabled. When the “donot disturb” feature is enabled, the overlay software selects thecurrently focused presentation window 630, captures its content at acertain frequency (e.g., 25 fps), and display the content on opaqueoverlay 660.

FIG. 7 is a simplified flowchart showing aspects of a method ofconfiguring a hierarchy of displayed windows on a computing device,according to certain embodiments. Method 700 can be performed byprocessor 1602 of system 1600, as shown and described below with respectto FIG. 16.

At step 710, method 700 can include detecting, by a first softwareapplication, a first window being displayed on a display of a hostcomputing device. The first software application (“overlay software”)can be software that can generate overlay 660 and may be controlled byand/or work in conjunction with input device 200. For example, theoverlay software can enable or disable “do not disturb” functionalitybased on inputs (e.g., cursor movement) from input device 200. The firstwindow can include presentation content from a second softwareapplication (e.g., presentation software, such as PowerPoint®, Keynote®,etc.), or other suitable software application, as discussed above.

At step 720, method 700 can include capturing, by the overlay software,an image of the graphical content on the first window. For example, theoverlay software can capture (e.g., copy) an image of a slide on thepresentation software.

At step 730, method 700 can include generating, by the overlay software,a second window (e.g., overlay 660) on the display of the host computingdevice. At step 740, method 700 includes configuring overlay 660 as atop-most window on the display, such that subsequent application-leveland system-level window pop-ups (or other notification/pop-up windows)occur on a window layer below overlay 660.

At step 750, method 700 can include displaying, by the overlay software,the captured (e.g., copied) image of the graphical content on overlay660. The capturing (step 720) and displaying (step 740) can occur at anysuitable rate. In some embodiments, the rate is typically 25-30 fps. Insome cases, overlay 660 can be opaque such that the underlying layers(e.g., windows) are not visible on the display, regardless of thecontent on overlay 660.

It should be appreciated that the specific steps illustrated in FIG. 7provide a particular method 700 for configuring a hierarchy of displayedwindows on a computing device, according to certain embodiments. Othersequences of steps may also be performed according to alternativeembodiments. For example, alternative embodiments may perform the stepsoutlined above in a different order. Moreover, the individual stepsillustrated in FIG. 7 may include multiple sub-steps that may beperformed in various sequences as appropriate to the individual step.Furthermore, additional steps may be added or removed depending on theparticular applications. For example, in some embodiments, method 700can include receiving input data from input device 200 (e.g., input datacorresponding to a selection of the presentation window to “focus” inputdata on that particular window), receiving subsequent input data (e.g.,button clicks, cursor movement commands, etc.) from input device 200,and applying the subsequent input data to the second application (e.g.,presentation software) on the first window when the second window(overlay 660) is displayed as the top-most window on the display. Insome cases, the presentation window may already be selected as the“focused” layer, such that any received input data is applied to thepresentation application.

In another example, method 700 can include causing, by the overlaysoftware, overlay 660 to be transparent such that the presentationwindow is visible when input data is received from input device 200,capturing, by the overlay software, an updated image of the graphicalcontent on the presentation window when the input data is no longerreceived from the input device for a threshold time (e.g., 1 sec), anddisplaying, by the overlay software, the captured updated image of thegraphical content on overlay 660.

Some embodiments may employ highlighting and/or a zoom function toenhance a presentation. For instance, received input data cancorresponding to a movement of a cursor on the first window (e.g.,presentation window) and method 700 can further include changing anopacity of the transparent second window based on the movement of thecursor. More specifically, the opacity of the transparent second windowcan be changed in an area around the cursor to highlight a correspondingarea of the graphical content on the on the first window, as furtherdiscussed below with respect to FIG. 8A. One of ordinary skill in theart would recognize and appreciate many variations, modifications, andalternatives of method 700.

As mentioned above, some embodiments may translate the movement of inputdevice 100/200 to a movement of a cursor on a display, or to aparticular function associated with content on a display (e.g., movementcontrols a volume of a media player, scrolls a document, etc.). Thecomputational translation of a movement in 3D space to movement on atwo-dimensional display can be performed by the input device (e.g., byprocessor 1710), by a host computer coupled to the input device (e.g.,processor 1602), by a combination thereof, or by a third party device(e.g., computing device in the cloud), as would be understood by one ofordinary skill in the art.

Highlighting, Zoom, Smart On/Off, Media Control, and No Sleep Functions

FIG. 8A shows aspects of a highlighting function in a presentationapplication, according to certain embodiments. An image 810 (e.g.,presentation slide) is shown on presentation window 630 on display 800.Display 800 further includes a semi-transparent layer 820 (e.g., overlay660) configured higher than the presentation window 630, as describedabove with respect to FIG. 6 (note: overlay 660 is opaque in theembodiment of FIG. 6). The semi-transparent layer can operate to dim theoverall image by “graying out” the slide so that a non-“grayed out” area830 gives the appearance of a highlighting effect. Area 830 movement cancorrespond to a movement of a cursor controlled by input device 200.

In some embodiments, the highlighting effect occurs over presentationwindow 630, as described above. One drawback is that pop-ups may stilloccur in this configuration. Alternatively or additionally, thehighlighting function can occur on overlay 660. The overlay software cancapture images of presentation window 630 and display them on opaqueoverlay 660. To create the highlighting effect, the entire overlay canbe dimmed except for an area 830 that is not dimmed, which can create ahighlighting effect. Such embodiments can still operate under the “donot disturb” setting and maintain the benefit of an uninterruptablepresentation. Area 830 can be any suitable shape or size, and may or maynot directly track cursor movement, which may be controlled by movementof the input device in 3D space, as discussed above. One of ordinaryskill in the art would understand the many variations, modifications,and alternative embodiments thereof.

FIG. 8B shows aspects of a zoom function in a presentation application,according to certain embodiments. An image 810 (e.g., presentationslide) is shown on presentation window 630 on display 800. Area 840shows an enlarged or “zoomed” portion of image 810. The movement of area840 can correspond to a movement of a cursor controlled by input device200.

In some embodiments, the zooming effect is achieved by capturing anddisplaying image 810 on overlay 660 and magnifying (e.g., zooming) image810 by a magnification factor (e.g., 1.5×, 2×, 10×, etc.) over area 840Area 840 can be any suitable shape or size, and may or may not directlytrack cursor movement. One of ordinary skill in the art would understandthe many variations, modifications, and alternative embodiments thereof.

In certain embodiments, input device 200 can include a smart on/offfeature that automatically powers on input device 200 in response toreceiving a user input (e.g., button press) and (re)establishes aconnection with a host computer (e.g., host computer with receiver 230,BLE host, etc.). In some cases, the user input can be saved (e.g., in amemory buffer) and applied after the wireless connection is established.Thus, a single user input can both power up input device 200 (e.g., insleep mode) and apply the user input to the focused window (e.g.,presentation window 630), which can simplify the connection processthereby allowing a user to simply plug in receiver 230 or press a key tobegin presenting without any cumbersome connection processes.

In some embodiments, software installed on a host computer can operatein conjunction with input device 200 to determine the contents on aparticular window. More specifically, some embodiments can scan anddetect if playable media (e.g., audio or video link, players, etc.) isaccessible on a selected (“focused”) window, such as a presentationslide. The software can relay this information to input device 200,causing input device to auto-configure input interface 120 (e.g.,buttons 122-126) to automatically play the media data without requiring,for example, cursor movement and selection of the media link or mediaplayer. Alternatively or additionally, motion of the input device can bemapped to certain functions (e.g., controlling a volume on a mediaplayer) in response to detecting certain content on a display. In somecases, multiple mappings can be configured in response to the detectionof singular content. For example, detecting a media play may cause oneor more buttons to be assigned to media transport controls (e.g., play,pause) and input device movement detection to be assigned to control avolume. These concepts are further discussed below with respect to FIGS.9A and 9B. In some embodiments, the overlay software of FIG. 6 can bethe same software that controls media scanning and detection on selectedwindows.

In further embodiments, input device 200 can implement a “no sleep”function to prevent a host computer from going into a sleep mode. Forexample, during a slide presentation, a presenter may stay on aparticular slide for an extended period of time, causing the screen togo blank and/or cause the host computing device to enter a low powermode of operation in response to a lack of user inputs for the extendedperiod of time. Input device 200 can keep the host computer “awake” byfrequently sending commands to the host computer to prevent the onset ofa sleep mode. For example, human interface device (HID) commands can besent to the corresponding host computer every interval of time (e.g.,every 10 sec) during periods of no user input activity. The HID commandscan perform any function, but preferably does not interfere with thedisplay to prevent any interruptions during a presentation. One ofordinary skill in the art would understand the many variations,modifications, and alternative embodiments thereof.

FIG. 9A shows the automatic configuration of input device 900 based oncontent of display 910, according to certain embodiments. Display 910 isshown as a presentation slide (e.g., PowerPoint® slide, Keynote® slide,etc.), but can be any suitable image. Display 910 can be operated by anysuitable host computing device (e.g., host computing device 210, 220,240, or 250, system 1600 of FIG. 16, etc.) Display 910 includes anembedded media player 915 and alphanumeric text. Input device 900includes a top button 922, middle button 924, and bottom button 926.Input device 900 can include any number of input interface controls(e.g., buttons, touch sensitive surfaces, microphones, etc.), similar toinput devices 100/200, as further discussed above. Input device 900 canfurther include one or more IMUS to track movement 928 in 3D space, asfurther discussed above.

In some embodiments, a host computing device (e.g., processor 1602) candetect one or more graphical control elements on display 910, determinetheir type, and generate configuration control data to auto-configureone or more input elements (e.g., buttons 922-926, movement 928, etc.)on the input device to control the graphical control element in one ormore ways that are typically relevant to the function of thecorresponding control element. Referring to FIG. 9A, in response todetecting media player 915, the configuration control data can causeinput device 900 to assign, for example, media transport controls tobuttons 922-926 (e.g., fast forward, play/pause, rewind, etc.), volumecontrol to the movement of input device 900 (e.g., upwards/downwardsmovement may control the volume), or combinations of inputs to controlthe corresponding control element. For example, volume control of mediaplayer 915 may be implemented when both a button is pressed (e.g.,button 922) and movement data 928 (e.g., movement in a generally up/downdirection) is received. One of ordinary skill in the art wouldunderstand the many variations, modifications, and alternativeembodiments thereof.

FIG. 9B shows the automatic configuration of input device 950 based oncontent of display 960, according to certain embodiments. Display 960 isshown as a presentation slide (e.g., PowerPoint® slide, Keynote® slide,etc.), but can be any suitable image. Display 960 can be operated by anysuitable host computing device (e.g., host computing device 210, 220,240, or 250, system 1600 of FIG. 16, etc.). Display 960 includes anembedded spreadsheet 970, a web-based hyperlink 980, and alphanumerictext. Spreadsheet 970 includes text that extends to multiple pages thatare not visible on a single screen that can be accessible bymanipulating scroll bar 975. In some cases, the text may be very smalland difficult to read. Thus, a magnifying function 990 may be employed,as shown. Input device 950 can include a top button 982, middle button984, and bottom button 986. Input device 950 can include any number ofinput interface controls (e.g., buttons, touch sensitive surfaces,microphones, etc.), similar to input devices 100/200/900, as furtherdiscussed above. Input device 950 can further include one or more IMUSto track movement 988 in 3D space, as further discussed above.

In some embodiments, a host computing device (e.g., processor 1602) candetect one or more graphical control elements on display 960, determinetheir type, and generate configuration control data to auto-configureone or more input elements (e.g., buttons 982-986, movement 988, etc.)on the input device to control the graphical control element in one ormore ways that are typically relevant to the function of thecorresponding control element. Referring to FIG. 9B, in response todetecting spreadsheet 970 and hyperlink 980, the configuration controldata can cause input device 900 to assign, for example, a hyperlinkbutton (e.g., middle button 984) to automatically launch hyperlink 980(e.g., without having to select hyperlink 980 with a cursor), and a“grab” button to automatically grab scroll bar 975 (or other manipulableobject), and movement 988 to control scrolling of the text onspreadsheet 970 (e.g., when the “grab” function is also selected), suchas scrolling up and scrolling down (or page up and page down) inresponse to detecting movement of input device 950 in an upward and/ordownward direction. In some cases, the host computer may detect that thetext in the spreadsheet is at or below a certain font point size (e.g.,below 8 pt. font) and assign a magnification function 990 to button 982.In some embodiments, pressing a button multiple times may toggle certainfunctions. For instance, pressing button 982 may toggle between amagnification function and a highlighting function (as further discussedabove with respect to FIGS. 8A and 8B. One of ordinary skill in the artwould understand the many variations, modifications, and alternativeembodiments thereof.

FIG. 10 is a simplified flow chart showing aspects of a method 1000 forautomatically configuring an input device based on the content of adisplay, according to certain embodiments. Method 1000 can be performedby processor 1602 of system 1600, as shown and described below withrespect to FIG. 16.

At step 1010, method 1000 can include detecting, by a processor on ahost computing device, a graphical control element on a graphical userinterface, according to certain embodiments. A graphical control elementcan include a media playing device (e.g., video, audio, etc.), ahyperlink, a word processor document, a spreadsheet document,alphanumeric text, or any item on a display (e.g., on a presentationslide), as would be understood by one of ordinary skill in the art.

At step 1020, method 1000 can include determining, by the processor, atype of the graphical control element. As indicated above, the type ofcontrol element can be any manipulable object on a display (e.g., mediaplayer, hyperlink, spreadsheet, etc.), according to certain embodiments.

At step 1030, method 1000 can include generating, by the processor,configuration control data to cause an input device to configure one ormore input elements on the input device to perform functionscorresponding to the type of the graphical control element, according tocertain embodiments. The one or more input elements can include at leastone of a button, touch sensor, motion sensor, or other input element, aswould be appreciated by one of ordinary skill in the art. The inputdevice can be one of a presentation device, smart phone, or wearablesmart device. In some embodiments, the configuration control data mayapply functions corresponding to a video or audio media player thatinclude at least one of media transport control functions or volumecontrol, where the media transport control functions may be associatedwith one or more buttons on the input device and the volume control maybe associated with a movement of the input device. In some cases,functions corresponding to a word processing document, a spreadsheetdocument, or alphanumeric text may include at least one of magnificationor page scrolling, where the magnification control can be associatedwith both a button and the movement of the input device, and the pagescrolling can be associated with the movement of the input device. Insome embodiments, the configuration control data can cause the inputdevice to configure at least two of the one or more input elements toperform functions corresponding to the type of the graphical controlelement, where the at least two of the one or more input elements can beassociated with different functions.

At step 1040, method 1000 can include sending, by the processor, theconfiguration control data to the input device. In some cases, the inputdevice can be separate from and communicatively coupled to the hostcomputing device (e.g., the input device and host computing device maynot be one and the same, such as a tablet computer and it'stouchscreen).

It should be appreciated that the specific steps illustrated in FIG. 10provide a particular method 1000 for automatically configuring an inputdevice based on the content of a display, according to certainembodiments. Other sequences of steps may also be performed according toalternative embodiments. For example, alternative embodiments mayperform the steps outlined above in a different order. Moreover, theindividual steps illustrated in FIG. 10 may include multiple sub-stepsthat may be performed in various sequences as appropriate to theindividual step. Furthermore, additional steps may be added or removeddepending on the particular applications. Any of the aspects describedabove with respect to method 1000 (or methods 300, 400, 700, and1100-1200) can be applied to any of the input devices, host computingdevices, and the like, described in this disclosure. One of ordinaryskill in the art would recognize and appreciate many variations,modifications, and alternatives of method 1000.

FIG. 11 is a simplified flow chart showing aspects of a method formodifying a highlighting function based on content on a display,according to certain embodiments. Method 1100 can be performed byprocessor 1602 of system 1600, as shown and described below with respectto FIG. 16. For illustrative purposes, input device 200 and hostcomputing device 1300 are described are referenced in the followingdescription of method 1100. It should be understood that any of theinput devices and/or host computing devices described herein can beused, as would be understood by one of ordinary skill in the art.

At step 1110, method 1100 can include detecting a first window 1310(“slide 1310”) on a display 1300 of a host computing device, accordingto certain embodiments. The detecting can be performed by a firstsoftware application (“overlay software”) that may be controlled byand/or work in conjunction with input device 200. In the embodimentsthat follow, the first window can include presentation content from asecond software application (e.g., presentation software, such asPowerPoint®, Keynote®, etc.), or other suitable software application(e.g., MS Word®, MS Excel®, etc.), as discussed above.

At step 1120, method 1100 can include detecting graphical content on thefirst window, according to certain embodiments. The graphical contentcan include a selectable element, such as an icon, an interactive object(e.g., media player, spreadsheet, scroll bar, etc.), a link (e.g.,hyperlink), alphanumeric text, or the like. The detected graphicalcontent can vary widely and is not limited to the examples providedherein, as would be understood by one of ordinary skill in the art.

Graphical content can be detected in several different ways. Consider,for example, presentation software (e.g., PowerPoint®) operating apresentation and displaying a slide with an embedded spreadsheet (e.g.,Excel®) in one corner, a media player in another corner, and a hyperlink in a third corner (see, e.g., FIG. 15A). One way to detect contentis via image processing. This may be advantageous in some instancesbecause there may be no need to access specific software to determinecontent. Instead, certain objects (e.g., selectable elements) can bedetermined by examining their shapes and image characteristics. Forexample, spreadsheets typically have a grid pattern with alphanumerictext configured in a structured and spatially organized and/orsymmetrical configuration (e.g., cells, rows, column, etc.). Imageprocessing techniques (e.g., performed in conjunction with processor(s)1602) can recognize the cells, structures, and patterns typicallyassociated with spreadsheet software, and characterize it as such. Oncecharacterized, the shape and/or color can be determined and the entireelement or portion thereof can be recognized and highlighted asdescribed herein.

An embedded media player may have certain common characteristics thatcan be detected via image processing. For instance, media players tendto have a square or rectangular shaped border, which may be contrastedwith its bordering background. Further, media players typically have a“play” button positioned in a center region, and may include a “play”icon (e.g., a sideways triangle) with certain color combinations (e.g.,typically red and white). Some media players may include media transportcontrols in other locations, data displayed on certain locations (e.g.,a title, file size, or other data located in a particular location), orother common characteristics typically associated with media players.Image processing techniques can recognize these features andcharacterize the media player accordingly. Once characterized, the shapeand/or color can be determined and the entire element or portion thereofcan be recognized and highlighted as described herein.

Hyperlinks (e.g., selectable elements that can cause a web browser toopen a particular web page) typically have certain commoncharacteristics. For example, hyperlinks are typically displayed asunderlined alphanumeric text, may include a domain names (e.g., “.com,.net, .gov, .edu, etc.” country codes, or the like) and may be displayedin a particular color scheme (e.g., blue text). Image processingtechniques can recognize these features and characterize the hyperlinkaccordingly. Once characterized, the shape and/or color can bedetermined and the hyperlink can be recognized and highlighted asdescribed herein. Image processing can be used to recognize more thansimply spreadsheets, media players, and hyperlinks, including certainobjects like word processing documents, PDF documents, graphs, tables,.jpgs, .gifs, .mp3 players, .mp4 players, .wav files, and the like. Eachtype of object typically has common features that are particular totheir type of file, which can be recognized by image processingtechniques, as described above. One of ordinary skill in the art wouldunderstand the many variations, modifications, and alternativeembodiments thereof.

Machine learning (e.g., operated by overlay software operating on system1600) can be used to identify objects, improve object identification,and reduce false positive recognition. For example, certain objects maybe determined to be a particular type of element (e.g., media player)when, in fact, they are not. This may be due to the fact that the imageprocessing software (e.g., overlay software) may recognize certainfeatures (e.g., underlined text, cells or rows/columns, etc.) that maysimply be background graphics on a slide or document that a user may notwant to be individually highlighted. A user can indicate that theidentified element is not, in fact, a selectable element in any numberof ways including, but not limited to, providing a user input (e.g.,pressing a button on input device 200), or indicating that theidentified element is not an element using a software interface (e.g.,when creating a slide on presentation software). In some cases, falsepositive element recognition can be automatic. For example, when afalsely identified element is never activated (e.g., no action occursthat can be identified, such as a web page being opened, media beginsplaying, etc.), or a cursor rarely engages the element, which mayindicate that it is not an element (e.g., if a media player is neverplayed, or a hyperlink is never (or rarely) associated with an input(e.g., button click)). As a particular user continues to use the overlaysoftware, various user characteristics, determined elements, and thelike, can be modified over time to increase accuracy. One of ordinaryskill in the art would understand the many variations, modifications,and alternative embodiments thereof.

In some embodiments, a user can indicate that an element is or is not tobe highlighted using, for example, overlay software. For instance, on aparticular window (e.g., slide), overlay software may indicate what itdetermines to be selectable elements that can be highlighted. A user canverify or refute that determination, which can increase positive elementidentifications.

Alternatively or additionally, some embodiments may access particularsoftware to determine what elements are included in a particular window.For instance, presentation software can be accessed to determine what isincluded in each particular slide, which is readily available and easilyaccessible as would be understood by one of ordinary skill in the art.It should be understood that the various methods of identifying elementsdescribed with respect to FIG. 11 can be applied to any of the figures,embodiments, systems, or methods, etc., described herein, as would beunderstood by one of ordinary skill in the art.

Referring back to FIG. 11, at step 1130, method 1100 can includegenerating a second window (overlay) on a window layer above the firstwindow, as similarly described above with respect to FIGS. 8A-8B. Thesecond layer can be transparent, semi-transparent, opaque, etc., inaddition to having any assortment of other features (e.g., color, shape,etc.) A transparent second layer may allow a user to see the underlyingwindow unimpeded. A semi-transparent layer can operate to dim theoverall underlying image. To create a highlighting effect, the overlaymay include a transparent area (e.g., an area tracking a movement of acursor) and a semi-transparent area (e.g., the remaining area) to “grayout” the window, except for the transparent area.

At step 1140, method 1100 can include changing the graphical qualitiesof the overlay based on the detected graphical content, according tocertain embodiments. In some cases, the graphical qualities of theoverlay may be similar to the highlighting and magnification features inconjunction with input data (e.g., movement data) from an input device,as shown and described above with respect to FIGS. 8A and 9B. In certainimplementations, certain graphical content can be highlightedirrespective of input data (e.g., buttons presses, movement data). Forinstance, a detected object (e.g., selectable element), such as a anembedded spreadsheet in a presentation application, can be highlighted(e.g., see FIG. 13B). Alternatively or additionally, sub-elements can beidentified and highlighted, as shown and further discussed below withrespect to FIG. 13C.

It should be appreciated that the specific steps illustrated in FIG. 11provide a particular method 1100 for modifying a highlighting functionbased on content on a display, according to certain embodiments. Othersequences of steps may also be performed according to alternativeembodiments. For example, alternative embodiments may perform the stepsoutlined above in a different order. Moreover, the individual stepsillustrated in FIG. 11 may include multiple sub-steps that may beperformed in various sequences as appropriate to the individual step.

Furthermore, additional steps may be added or removed depending on theparticular applications. For instance, some embodiments may include theadditional steps of (i) receiving input data corresponding to a movementof a cursor on the first window, (ii) setting a transparency of an areaaround the cursor to a first transparency, and (iii) and setting atransparency of a remainder of the overlay to a second transparency,such that the area around the cursor appears to highlight acorresponding area of the graphical content on the first window. This isshown, for example, in FIG. 13A.

In some embodiments, method 1100 may further include (i) detecting aselectable element in the graphical content, (ii) determining a shape ofthe selectable element, (iii) setting a transparency of an area aroundthe selectable element to a first transparency, and (iv) setting atransparency of a remainder of the overlay to a second transparency,such that the area around the selectable element appears to behighlighted. For example, the selectable element can be spreadsheetembedded on presentation software (see, e.g., FIG. 13B). In this case,the shape can be determined (e.g., a spreadsheet can be of a rectangularshape of a particular size), and the graphical qualities of the overlaycan be configured such that the overlay is transparent over theselectable element, and darkened (e.g., “grayed out”) over the remainderof the overlay or portions thereof. One of ordinary skill in the artwould understand the many variations, modifications, and alternativeembodiments thereof.

In some embodiments, method 1100 can further include (i) detecting asecond selectable element in the graphical content, (ii) receiving inputdata corresponding to a movement of a cursor on the first window, and(iii) selecting one of the first selectable element or the secondselectable element based on the movement of the cursor, wherein thesetting the transparency is applied to the selected first or secondselectable element. For example, both a spreadsheet (selectable element)and a media player (second selectable element) may be detected on awindow (see, e.g., FIG. 14A). Based on a movement of a cursor (e.g., howclose the cursor is to each selectable element, and/or a button press onthe input device, which quadrant the cursor is located, etc.), one ofthe selectable element or second selectable element may be highlighted,as shown and described below with respect to FIGS. 14A and 14B.

In further embodiments, method 1100 may include the detection ofsub-elements within a selectable element, as shown and described belowwith respect to FIG. 13C. For instance, method 1100 can further includethe steps of (i) detecting a selectable element (e.g., image of inputdevice 1390) in the graphical content, (ii) detecting a sub-elementcontained within in the selectable element (e.g., button 1392), (iii)determining a shape of the sub-element, (iv) setting a transparency ofan area around the sub-element on the overlay to a first transparency(e.g., transparent), and (v) setting a transparency of a remainder ofthe overlay to a second transparency (e.g., darkened, textured, “grayedout” or the like), such that the area over the sub-element appears to behighlighted. In some cases, a user can switch highlighting from aselectable element to one or more corresponding sub-elements based onreceived input data from the input device. For instance, successivebuttons presses may cycle between a selectable element and asub-element. Likewise, successive buttons presses (or other suitableinput) can trigger cycling between sub-elements of a selectable element.In some implementations, method 1100 can further include (i) detecting asecond sub-element of the selectable element, (ii) receiving input datacorresponding to a movement of a cursor on the first window, and (iii)selecting one of the first sub-element or second sub-elements based onthe movement of the cursor, where the setting the transparency isapplied to the selected first or second sub-element. Alternatively oradditionally, method 1100 may include switching between the firstsub-element or second sub-elements based on the input data from theinput device, where the setting the transparency is applied to theselected first or second sub-element. Thus, certain embodiments mayswitch between selectable elements in response to receiving movementdata from an input device, and switch between sub-elements within aselectable element in response to receiving non-movement data includingbutton presses, touch sensor presses, or other suitable input type, aswould be understood by one of ordinary skill in the art. Any of theaspects described above with respect to method 1100 can be applied toany of the input devices, host computing devices, and the like,described in this disclosure. One of ordinary skill in the art wouldrecognize and appreciate many variations, modifications, andalternatives of method 1100.

FIG. 12 is a simplified flow chart showing aspects of a method 1200 formodifying a color of a highlighting function based on content on adisplay, according to certain embodiments. Method 1200 can be performedby processor 1602 of system 1600, as shown and described below withrespect to FIG. 16. For illustrative purposes, input device 200 and hostcomputing device 210 are described are referenced in the followingdescription of method 1200. It should be understood that any of theinput devices and/or host computing devices described herein can beused, as would be understood by one of ordinary skill in the art.

In some embodiments, the highlighting feature described herein may bedifficult to see or appear “washed out” when applied to windows (e.g.,presentation slides) having certain color schemes. For example, if apresentation slide had various images having a number of gray-scaleshades, then applying an overlay with a gray tone may obscure theunderlying graphical content to the point where it may be no longervisible. By examining the color content of a slide, and moreparticularly the color content inside and out of the highlighted area,an improved highlighting color scheme can be employed to ensure thatlittle to no underlying graphical content is obscured during whenperforming a highlighting function.

At step 1210, method 1200 can include receiving input data correspondingto a movement of a cursor on the first window, according to certainembodiments. For example, the input data can be input device 200, acomputer mouse, trackball controller, or the like, as would beunderstood by one of ordinary skill in the art.

At step 1220, method 1200 can include defining an area around thecursor. For example, an area around a cursor may be a circle with apredetermined radius (e.g., 1 inch or other unit of measurement, e.g.,tied to monitor dots-per-inch (dpi)), as shown below in FIG. 13A. Thearea can be of any size or shape, as would be understood by one ofordinary skill in the art. In some cases, the area may be fixed,user-programmable, or dynamic such that it can change shape (e.g.,change radius) based on a size of corresponding graphical content. Forexample, if most of the graphical content includes relatively smallselectable elements, then the defined area around the cursor may besmall. Similarly, if the graphical content tends to be large, then alarge defined area may be used. One of ordinary skill in the art wouldunderstand the many variations, modifications, and alternativeembodiments thereof.

At step 1230, method 1200 can include determining one or more colorsassociated with the graphical content inside the defined area around thecursor, according to certain embodiments. For example, a dominant colormay be detected (e.g., color most prevalent in defined area), some orall colors in the defined area may be detected, an aggregate color maybe detected, or other suitable method as would be understood by one ofordinary skill in the art.

At step 1240, method 1200 can include determining one or more colorsassociated with the graphical content outside the defined area aroundthe cursor, according to certain embodiments. For example, a dominantcolor may be detected (e.g., color most prevalent outside the definedarea), some or all colors outside the defined area may be detected, anaggregate color may be detected, or other suitable method as would beunderstood by one of ordinary skill in the art. In some embodiments, oneor more colors may be detected outside the defined area, but within acertain distance, dpi, or other unit of measurement, from the definedarea, as would be understood by one of ordinary skill in the art.

At step 1250, method 1200 can include determining a visibility factorassociated with a difference between the one or more colors associatedwith the graphical content inside the defined area around the cursorwith the one or more colors associated with the graphical contentoutside the defined area around the cursor, according to certainembodiments. In other words, at step 1250, method 1200 can determine if,for example, a default color set (e.g., gray overlay) will “wash out” orobscure any underlying graphical content on the first window. Thevisibility factor can be a score or determined value (e.g., 0-10 withhigh visibility at the top end of the scale) based on contrasting colorcharacteristics of the overlay when applying the highlighting effect andthe color of the underlying graphical content. Any suitable scoringmethod can be used, as would be understood by one of ordinary skill inthe art. Alternatively or additionally, a brightness can be adjusted toensure good contrast for improving the visibility of the graphicalcontent.

At step 1260, method 1200 can include setting a color of the area insidethe defined area around the cursor based on the determined visibilityfactor. In the example above where graphical content on the first windowincludes predominantly gray features, the overlay may utilize a graybackground of a different brightness or a different color to mute ordarken the area outside the defined area, but not obscure the graphicalcontent.

It should be appreciated that the specific steps illustrated in FIG. 12provide a particular method 1200 for modifying a color of a highlightingfunction based on content on a display, according to certainembodiments. Other sequences of steps may also be performed according toalternative embodiments. For example, alternative embodiments mayperform the steps outlined above in a different order. Moreover, theindividual steps illustrated in FIG. 12 may include multiple sub-stepsthat may be performed in various sequences as appropriate to theindividual step. Some embodiments may use more or fewer steps. Forexample, in some embodiments, method 1200 may have fewer steps including(i) determining a color associated with the graphical content on thefirst window, (ii) determining a contrasting color based on thedetermined color, and (iii) setting a color of at least a portion of thearea around the cursor to the determined contrasting color. One ofordinary skill in the art would understand the many variations,modifications, and alternative embodiments thereof. Any of the aspectsdescribed above with respect to method 1200 (or methods 300, 400, 700,1000 and 1100) can be applied to any of the input devices, hostcomputing devices, and the like, described in this disclosure. One ofordinary skill in the art would recognize and appreciate manyvariations, modifications, and alternatives of method 1200.

FIG. 13A shows aspects of a highlighting function in a presentationapplication, according to certain embodiments. A presentation slide 1310is shown on display 1300 with spreadsheet 1320 embedded on slide 1310,and a highlighted area 1330 that highlights a portion of spreadsheet1320. Highlighted area 1330 can be interchangeably referred to as a“spotlight.” Highlighted area 1330 is shown a circle having a certainarea, however any suitable shape or size of highlighted area 1330 can beused. Highlighted area 1330 can be generated by identifying an element(e.g., using image processing or accessing software, as described abovewith respect to FIG. 11) and setting a transparency of an overlay. Insome cases, highlighted area 1330 can be controlled based on a movementof a cursor. For example, moving a cursor over slide 1310 inhighlighting mode causes a corresponding movement in highlighted area1330. In some embodiments, the cursor may be invisible when ahighlighting function is selected (e.g., a button press on input device200), leaving only the highlighted area to prevent obscuring anyunderlying graphical content. In some cases, the cursor may be visible.One of ordinary skill in the art would understand the many variations,modifications, and alternative embodiments thereof.

FIG. 13B shows aspects of detecting and highlighting a selectableelement on a display, according to certain embodiments. In someembodiments, objects (e.g., selectable elements) can be highlightedinstead of an area around a cursor. That is, instead of highlighting anarea around a cursor and manually moving the cursor to a designatedlocation, which may or may not fully highlight a particular object(e.g., spreadsheet), the entire selectable element or portion thereofcan be highlighted, which may or may not be directly tied to cursormovement. Referring to FIG. 13B, the selectable element (e.g.,spreadsheet) is highlighted (e.g., the overlay is transparent over anarea identified as selectable element 1360) and the remainder of slide1350 is darkened to create the contrasting (highlighting) effect.Although a single element is shown to be highlighted, multiple elementscan be highlighted, according to certain embodiments. For example, aclass of element (e.g., spreadsheets, .jpgs, hyperlinks, etc.) may allbe highlighted (or a subset thereof) when one of the elements of thesame class are highlighted. One of ordinary skill in the art wouldunderstand the many variations, modifications, and alternativeembodiments thereof.

FIG. 13C shows aspects of detecting and highlighting a sub-element on adisplay, according to certain embodiments. Display 1370 displays slide1340, which includes an image of an input device (e.g., input device200) and various host computing devices. Image processing software, asdescribed above, can recognize element 1390 (e.g., input device 200) asa discrete element that can be highlighted. Additionally, the imageprocessing software can recognize shapes and features within a detectedelement (i.e., sub-elements) for highlighting. Referring to FIG. 13C,element 1390 includes several buttons (e.g., circles) including button1392, which is highlighted 1394 using an overlay as further describedabove. In some cases, multiple sub-element can be highlighted based onclass or other metric, as further discussed above. In someimplementations, a user may switch between selectable elements orsub-elements by providing an input on an input device (e.g., buttonpress or movement of input device 200), as further discussed below withrespect to FIG. 14.

In certain embodiments, the size of a spotlight (e.g., highlighted area1330) can be changed based on different criteria. For example, in somecases where a graphical element (e.g., block of text, image, etc.) isrelatively large, a size (e.g., radius, area, etc.) of the spotlight mayincrease when a cursor hovers it. Similarly, if the graphical element issmall, the spotlight size may decrease accordingly. In some embodiments,a size of the spotlight may change due, at least in part, to a motion ofthe input device. For example, pressing and holding button 122 may causea spotlight to appear (e.g., highlight 1330) and movement of inputdevice 100 may change the size of the spotlight. For instance, movingupwards may cause the radius of the spotlight to increase, and movingdownwards may cause the radius of the spotlight to decrease. In anotherexample, pressing and holding a button (e.g., button 122) and detectinga rotation of input device 100 clockwise (e.g., via one or moregyroscopes, accelerometers, as described with respect to movementtracking system block 1730 of FIG. 17) may cause the radius of thespotlight to increase, while counter clockwise rotation may cause theradius to decrease. One of ordinary skill in the art would understandthe many variations, modifications, and alternative embodiments.

FIG. 14 shows aspects of detecting and highlighting sub-elements on adisplay, according to certain embodiments. Display 1400 can include apresentation slide 1410 with spreadsheet (i.e., selectable element1420), various text, and hyperlink 1470. The spreadsheet includesmultiple sub-elements including rows, columns, and cells. Row 1430,column 1440, and cell 1450 are shown as highlighted, and cell 1450 isfurther magnified 1460. Selectable element 1420 and its sub-elements canbe identified via image processing or user-identification, as describedabove with respect to FIG. 11. Although multiple elements are shown ashighlighted in FIG. 14, it should be understood that, in this particularexample, they are discussed and treated as though they are individuallyhighlighted (e.g., no other elements or sub-elements are highlighted) tosimplify explanation, however some embodiments may employmultiple-element highlighting schemes. One of ordinary skill in the artwould understand the many variations, modifications, and alternativeembodiments thereof.

In some embodiments, a user can switch between selectable elements byproviding input to an input device (e.g., input device 200). Forexample, a user may control the movement of a cursor and select one ofseveral elements by clicking on it (e.g., a button assigned to ahighlighting function). In some cases, a button or group of buttons maycycle between selectable elements (e.g., selectable elements 1420 and1470). Referring to FIG. 14, a user can cycle between sub-elements1430-1450 by moving input device 200 and/or pressing buttons programmedto cycle between sub-elements. For example, a user may select thespreadsheet (e.g., selectable element 1420) by moving a cursor (orcursorless movement) toward the spreadsheet and away from the hyperlink(e.g., selectable element 1470). Once selected, the user may cyclebetween sub-element via a corresponding button press (e.g., buttondesignated to cycle through selectable elements/sub-elements tohighlight) or input device movement. In the case where row 1430 isselected and highlighted, a subsequent button press may switch to column1440, followed by cell 1450 in response to a third button press. In someembodiments, once row 1430 is selected, subsequent movement mayhighlight other rows. This concept can apply to column and cellselection.

In some embodiments, multiple functionality can be applied to particularselectable elements. For example, when the overlay software determinesthat selectable element 1420 is a spreadsheet, and further identifiesindividual rows, columns, and cells, it may analyze the size of thecorresponding text and automatically apply a magnifying feature (1460)in addition to highlighting so that small text and details may be moreeasily seen. In some cases, multiple functions can be eitherautomatically or manually configured. One of ordinary skill in the artwould understand the many variations, modifications, and alternativeembodiments thereof.

In some embodiments, the image processing may be a real-time and/ordynamic process. For example, a spreadsheet may have hundreds of rows ofdata, with only a small subset to appear on a slide at one particulartime. The overlay software can detect when a user, for example, scrollsan embedded spreadsheet, which causes a change in the image. Asindicated above, the overlay software may recognize the spreadsheet as anumber of recognizable shapes and sizes that can be independentlyhighlighted—not necessarily as a cell in a functional spreadsheetapplication. Thus, when scrolling occurs, which can be a change in theidentified shapes of selectable elements and sub-elements, the imageprocessing can update the image and it's correspondingelements/sub-elements. The identification can be performed in real-time,periodically, in response to detecting a change to the image, or at anysuitable frequency or in response to any event. One of ordinary skill inthe art would understand the many variations, modifications, andalternative embodiments thereof.

There are various ways that a selectable element can be selected forhighlighting. For example, a user may move a cursor (e.g., via inputdevice 200) over a selectable element (identified by image processingvia overlay software) and select it. Alternatively or additionally, auser can move a cursor towards a selectable element and the overlaysoftware can determine an intended element to highlight. FIGS. 15A and15B illustrate two different methods of selecting a selectable elementto highlight, according to certain embodiments.

FIG. 15A shows aspects of determining a selectable element to highlighton a display, according to certain embodiments. Display 1500 includes awindow 1510 (e.g., presentation slide) divided into four quadrants I-IV.In the embodiment shown, selectable element 1530 is a spreadsheet inquadrant I, selectable element 1550 is a media player in quadrant II,selectable element 1535 is a graph in quadrant III, and selectableelement 1540 is a hyperlink in quadrant IV. A selectable element can beselected for highlighting by moving a cursor into a particular quadrant.This may be advantageous if cursor movement is highly sensitive (e.g.,very fast moving) or if the elements are very small and difficult toselect with a cursor, for example. Referring to FIG. 15A, a user movescursor 1560 from quadrant IV to quadrant II and the media player isautomatically highlighted 1552. In some cases, if the cursor is in anylocation of a quadrant, the corresponding selectable element within thatquadrant can be highlighted. There may be occasions where multipleselectable elements are located within a single quadrant. In such cases,quadrant selection in combination with cycling (see description abovewith respect to FIG. 14) can be implemented. One of ordinary skill inthe art would understand the many variations, modifications, andalternative embodiments thereof.

FIG. 15B shows aspects of determining a selectable element to highlighton a display, according to certain embodiments. A selectable element canbe selected for highlighting based on its relative distance from acursor. For example, the closest selectable element (or sub-element) maybe selected for highlighting. Referring to FIG. 15B, display 1500includes a window 1510 (e.g., presentation slide) with selectableelements 1530, 1535, 1540 and 1550. Cursor 1560 is located at a firstdistance 1570 from the hyperlink (selectable element 1540), a seconddistance 1572 from the media player (selectable element 1550), a thirddistance 1574 from the spreadsheet (e.g., selectable element 1530), anda fourth distance 1576 from the graph (selectable element 1535). Thedistance can be measured using any suitable units of measurementincluding DPI or other suitable metric, as would be understood by one ofordinary skill in the art. Cursor 1560 is closest to the hyperlink,which is highlighted accordingly (highlight 1552). Although two methodsof determining which element should be highlighted are described here,any suitable highlighting algorithm can be used. In some of theembodiments shown in the various figures, the highlighting schemeconforms to the shape of the selectable element or sub-element to behighlighted. In some cases, the highlight may have rounded edges, sharpedges, or may be a different shape than the underlying selected element.Any form of highlighting, including its shape, size, color, texture(e.g., patterns), or the like, can be used. One of ordinary skill in theart would understand the many variations, modifications, and alternativeembodiments thereof.

Although many of the embodiments described herein generally describe aninput device such as a presenter (e.g., input device 200) and personalcomputers (e.g., host computing device 210), the various concepts may beapplied to other types of input devices and computing devices, as wouldbe understood by one of ordinary skill in the art. For instance, aspectsof system 1700 (e.g., operating input device 200) can be included in acomputer mouse, track ball controller, video game controller, remotecontroller (e.g., for a television), or other suitable device. Hostcomputing device 210 can be a home entertainment system or any suitablesystem (e.g., operated by aspects of system 1600). Some of theembodiments herein describe the use of buttons, movement detection,and/or touch detection to implement some of the functions describedherein (e.g., highlighting, magnification, etc.), however other methodsof input can be used, such as voice control. Some embodiments maycombine some of the functions described herein. For instance, pressing abutton on input device 200 may cause a host computer to play a mediafile on a media player. However, pressing and holding the same buttonmay cause a volume control function modulated by, e.g., moving inputdevice 200 up and down. Similarly, pressing a button may select an image(e.g., .jpg), while pressing and holding may display the image in fullscreen mode with a zoom and highlight features applied. In some cases,the size of a highlight or amount of magnification can change based oncharacteristics of the graphical content. Very small text may includehigh magnification, and large text may include relatively smallermagnification. Some embodiments may switch between magnification (e.g.,amount of magnification) modes or highlight modes (e.g.,shape/size/color of highlighted area). Some highlighting may includehard borders (e.g., solid lines), soft borders (e.g., fading or gradededge), dynamic effects (e.g., animations when switching image fromregular to full screen mode), or the like. One of ordinary skill in theart would understand the many variations, modifications, and alternativeembodiments thereof, and the present disclosure should by no means limitthe myriad applications that are possible, whether explicitly describedor not.

Exemplary Host Computing Systems Implementing Embodiments Herein

FIG. 16 shows a system for operating a host computing device, accordingto certain embodiments. Computer system (“system”) 1600 can be used toimplement any of the host computing devices discussed above with respectto FIGS. 1-15. Computer system 1600 can include one or more processors1602 that can communicate with a number of peripheral devices (e.g.,input devices) via a bus subsystem 1604. These peripheral devices caninclude storage subsystem 1606 (comprising memory subsystem 1608 andfile storage subsystem 1610), user interface input devices 1614, userinterface output devices 1616, and a network interface subsystem 1612.

In some examples, internal bus subsystem 1604 can provide a mechanismfor letting the various components and subsystems of computer system1600 communicate with each other as intended. Although internal bussubsystem 1604 is shown schematically as a single bus, alternativeembodiments of the bus subsystem can utilize multiple buses.Additionally, network interface subsystem 1612 can serve as an interfacefor communicating data between computer system 1600 and other computersystems or networks. Embodiments of network interface subsystem 1612 caninclude wired interfaces (e.g., Ethernet, CAN, RS232, RS485, etc.) orwireless interfaces (e.g., Bluetooth®, BLE, ZigBee®, Wi-Fi, cellularprotocols, etc.).

In some cases, user interface input devices 1614 can include a presenter(e.g., input device 100/200), a keyboard, a pointing device (e.g.,mouse, trackball, touchpad, etc.), a touchscreen incorporated into adisplay, audio input devices (e.g., voice recognition systems,microphones, etc.), Human Machine Interfaces (HMI) and other types ofinput devices. In general, use of the term “input device” is intended toinclude all possible types of devices and mechanisms for inputtinginformation into computer system 1600. Additionally, user interfaceoutput devices 1616 can include a display subsystem, a printer, ornon-visual displays such as audio output devices, etc. The displaysubsystem can be any known type of display device. In general, use ofthe term “output device” is intended to include all possible types ofdevices and mechanisms for outputting information from computer system1600.

Storage subsystem 1606 can include memory subsystem 1608 and filestorage subsystem 1610. Subsystems 1608 and 1610 representnon-transitory computer-readable storage media that can store programcode and/or data that provide the functionality of embodiments of thepresent disclosure. In some embodiments, memory subsystem 1608 caninclude a number of memories including main random access memory (RAM)1618 for storage of instructions and data during program execution andread-only memory (ROM) 1620 in which fixed instructions may be stored.File storage subsystem 1610 can provide persistent (i.e., non-volatile)storage for program and data files, and can include a magnetic orsolid-state hard disk drive, an optical drive along with associatedremovable media (e.g., CD-ROM, DVD, Blu-Ray, etc.), a removable flashmemory-based drive or card, and/or other types of storage media known inthe art. Storage Subsystem 1606 can store the various host softwareimplementations described with respect to FIGS. 1-15B (e.g., overlaysoftware, software for “no sleep” functions, media detection software,highlighting software, etc., as further discussed above).

It should be appreciated that computer system 1600 is illustrative andnot intended to limit embodiments of the present disclosure. Many otherconfigurations having more or fewer components than system 1600 arepossible. The various embodiments further can be implemented in a widevariety of operating environments, which in some cases can include oneor more user computers, computing devices or processing devices, whichcan be used to operate any of a number of applications. User or clientdevices can include any of a number of general purpose personalcomputers, such as desktop or laptop computers running a standard ornon-standard operating system, as well as cellular, wireless andhandheld devices running mobile software and capable of supporting anumber of networking and messaging protocols. Such a system also caninclude a number of workstations running any of a variety ofcommercially available operating systems and other known applicationsfor purposes such as development and database management. These devicesalso can include other electronic devices, such as dummy terminals,thin-clients, gaming systems and other devices capable of communicatingvia a network.

Most embodiments utilize at least one network that would be familiar tothose skilled in the art for supporting communications using any of avariety of commercially available protocols, such as TCP/IP, UDP, OSI,FTP, UPnP, NFS, CIFS, and the like. The network can be, for example, alocal area network, a wide-area network, a virtual private network, theInternet, an intranet, an extranet, a public switched telephone network,an infrared network, a wireless network, and any combination thereof.

In embodiments utilizing a network server, the network server can runany of a variety of server or mid-tier applications, including HTTPservers, FTP servers, CGI servers, data servers, Java servers, andbusiness application servers. The server(s) also may be capable ofexecuting programs or scripts in response to requests from user devices,such as by executing one or more applications that may be implemented asone or more scripts or programs written in any programming language,including but not limited to Java®, C, C# or C++, or any scriptinglanguage, such as Perl, Python or TCL, as well as combinations thereof.The server(s) may also include database servers, including withoutlimitation those commercially available from Oracle®, Microsoft®,Sybase® and IBM®.

Such devices also can include a computer-readable storage media reader,a communications device (e.g., a modem, a network card (wireless orwired), an infrared communication device, etc.), and working memory asdescribed above. The computer-readable storage media reader can beconnected with, or configured to receive, a non-transitorycomputer-readable storage medium, representing remote, local, fixed,and/or removable storage devices as well as storage media fortemporarily and/or more permanently containing, storing, transmitting,and retrieving computer-readable information. The system and variousdevices also typically will include a number of software applications,modules, services or other elements located within at least one workingmemory device, including an operating system and application programs,such as a client application or browser. It should be appreciated thatalternate embodiments may have numerous variations from that describedabove. F or example, customized hardware might also be used and/orparticular elements might be implemented in hardware, software(including portable software, such as applets) or both. Further,connections to other computing devices such as network input/outputdevices may be employed.

Examples of Systems for Operating an Input Device

FIG. 17 is a simplified block diagram of a system 1700 configured tooperate input device 100/200, according to certain embodiments. System1700 includes processor(s) 1710, operational logic 1720, movementtracking system 1730, communications system 1740, input detection system1750, and power management system 1760. Each of system blocks 1720-1760can be in electrical communication with the processor(s) 1710. System1700 may further include additional systems that are not shown ordiscussed to prevent obfuscation of the novel features described herein.

In certain embodiments, processor(s) 1710 can include one or moremicroprocessors (μCs) and can be configured to control the operation ofsystem 1700. Alternatively, processor(s) 1710 may include one or moremicrocontrollers (MCUs), digital signal processors (DSPs), or the like,with supporting hardware and/or firmware (e.g., memory, programmableI/Os, etc.), as would be appreciated by one of ordinary skill in theart. Alternatively, MCUs, μCs, DSPs, and the like, may be configured inother system blocks of system 1700. For example, operational logic blockmay include a local processor to control the automatic receiver/BLEconnection processes (e.g., see FIGS. 3-4), overlay processes (e.g., seeFIGS. 5-7), or the like, described herein. In some embodiments, multipleprocessors may provide an increased performance in system 1700 speed andbandwidth. It should be noted that although multiple processors mayimprove system 1700 performance, they are not required for standardoperation of the embodiments described herein.

Operational logic 1720 can include any combination of software,firmware, or hardware that can perform the various steps, operations,and functions associated with input device 100/200, as described abovewith respect to FIGS. 1-15B. For instance, operational logic 1720 cancontrol the hierarchical connection scheme of input device 100/200, asdescribed above with respect to FIGS. 2-4. Operational logic 1720 cancontrol the various embodiments of the overlay functions described abovewith respect to FIGS. 5-7, and any of the other functions (e.g.,highlighting, zoom, smart on/off, no sleep mode, etc.) described and/orsupported in the present disclosure. Operational logic 1720 can bestored in any suitable non-transitory computer-readable storage mediathat can store program code and/or data that provide the functionalityof embodiments of the present disclosure. That is, operational logic1720 can store one or more software programs to be executed byprocessors (e.g., in processor(s) 1710). It should be understood that“software” can refer to sequences of instructions that, when executed byprocessing unit(s) (e.g., processors, processing devices, etc.), causesystem 1700 to perform certain operations of software programs. Theinstructions can be stored as firmware residing in read only memory(ROM) and/or applications stored in media storage that can be read intomemory for processing by processing devices. Software can be implementedas a single program or a collection of separate programs and can bestored in non-volatile storage and copied in whole or in-part tovolatile working memory during program execution. From a storagesubsystem, processing devices can retrieve program instructions toexecute in order to execute various operations (e.g.,auto-coupling—FIGS. 3-4.) as described herein. In some embodiments, thememory associated with operational logic 1720 can include RAM, ROM,solid-state memory, magnetic or optically-based memory systems,removable media (e.g., “thumb drives,” SD cards, flash-based devices),or other types of storage media known in the art. One of ordinary skillin the art would understand the many variations, modifications, andalternative embodiments thereof.

Movement tracking system 1730 can be configured to track a movement ofinput device 100. In certain embodiments, one or more accelerometers canbe used for movement detection. Accelerometers can be electromechanicaldevices (e.g., micro-electromechanical systems (MEMS) devices)configured to measure acceleration forces (e.g., static and dynamicforces). One or more accelerometers can be used to detectthree-dimensional (3D) positioning. For example, 3D tracking can utilizea three-axis accelerometer or two two-axis accelerometers.Accelerometers can provide movement data that can include the velocity,physical orientation, and acceleration of input device 100. For example,movement tracking system 1730 can provide movement data to a hostcomputer to control a cursor on a screen, as discussed above withrespect to FIGS. 5-8. In some embodiments, gyroscope(s) can be used inlieu of or in conjunction with accelerometer(s) to determine movement orinput device orientation. Movement tracking system 1730 can reportmovement information to processor(s) 1710.

Communications system 1740 can be configured to provide wirelesscommunication between input device 100/200 and a host computing device,according to certain embodiments. Communications system 1740 can employany suitable wireless communication protocol including, but not limitedto Bluetooth®-based communication protocols (e.g., BLE), IR, ZigBee®,ZWire®, Wi-Fi (IEEE 802.11), Thread, Logi® protocols, or other suitablecommunication technology to facilitate wireless bidirectionalcommunication between input device 100/200 and a host computing device(e.g., any of host computing devices 210, 220, 240, 250). System 1700may optionally comprise a hardwired connection to a host computingdevice. For example, input device 100 can be configured to receive aUniversal Serial Bus (e.g., USB-C) cable to enable bi-directionalelectronic communication between input device 100 and a host computingdevice. Some embodiments may utilize different types of cables orconnection protocol standards to establish hardwired communication withother entities.

Input detection system 1750 can be configured to detect a touch or touchgesture on one or more buttons, touch sensitive surfaces, or the like,on input device 100, as further described above with respect to FIG. 1.Input detection system 1750 can include one or more touch sensitivesurfaces, touch sensors, buttons, controls, or other user interface, aswould be understood by one of ordinary skill in the art. Touch sensorsgenerally comprise sensing elements suitable to detect a signal such asdirect contact, electromagnetic or electrostatic fields, or a beam ofelectromagnetic radiation. Touch sensors can be configured to detect atleast one of changes in the received signal, the presence of a signal,or the absence of a signal.

Power management system 1760 can be configured to manage powerdistribution, recharging, power efficiency, and the like, for inputdevice 100. In some embodiments, power management system 1760 caninclude a battery (not shown), a USB based recharging system for thebattery (not shown), power management devices, and a power grid withinsystem 1700 to provide power to each subsystem (e.g., accelerometers,gyroscopes, etc.). In certain embodiments, the functions provided bypower management system 1760 may be incorporated into processor(s) 1710.The power source can be a replaceable battery, a rechargeable energystorage device (e.g., super capacitor, Lithium Polymer Battery, NiMH,NiCd), or a corded power supply (e.g., via USB-C port—see FIG. 1). Oneof ordinary skill in the art would understand the many variations,modifications, and alternative embodiments thereof.

It should be appreciated that system 1700 is illustrative and thatvariations and modifications are possible. System 1700 can have othercapabilities not specifically described here (e.g., mobile phone, globalpositioning system (GPS), power management, one or more cameras, variousconnection ports for connecting external devices or accessories, etc.).Further, while system 1700 is described with reference to particularblocks, it is to be understood that these blocks are defined forconvenience of description and are not intended to imply a particularphysical arrangement of component parts. Further, the blocks need notcorrespond to physically distinct components. Blocks can be configuredto perform various operations, e.g., by programming a processor orproviding appropriate control circuitry, and various blocks might ormight not be reconfigurable depending on how the initial configurationis obtained. Embodiments of the present invention can be realized in avariety of apparatuses including electronic devices implemented usingany combination of circuitry and software. Furthermore, aspects and/orportions of system 1700 may be combined with or operated by othersub-systems as required by design. For example, operational logic 1720may operate within processor(s) 1710 instead of functioning as aseparate entity. The foregoing embodiments are not intended to belimiting and those of ordinary skill in the art with the benefit of thisdisclosure would appreciate the myriad applications and possibilities.

Other variations are within the spirit of the present disclosure. Thus,while the disclosed techniques are susceptible to various modificationsand alternative constructions, certain illustrated embodiments thereofare shown in the drawings and have been described above in detail. Itshould be understood, however, that there is no intention to limit thedisclosure to the specific form or forms disclosed, but on the contrary,the intention is to cover all modifications, alternative constructionsand equivalents falling within the spirit and scope of the disclosure,as defined in the appended claims.

The use of the terms “a” and “an” and “the” and similar referents in thecontext of describing the disclosed embodiments (especially in thecontext of the following claims) are to be construed to cover both thesingular and the plural, unless otherwise indicated herein or clearlycontradicted by context. The terms “comprising,” “having,” “including,”and “containing” are to be construed as open-ended terms (i.e., meaning“including, but not limited to,”) unless otherwise noted. The term“connected” is to be construed as partly or wholly contained within,attached to, or joined together, even if there is something intervening.The phrase “based on” should be understood to be open-ended, and notlimiting in any way, and is intended to be interpreted or otherwise readas “based at least in part on,” where appropriate. Recitation of rangesof values herein are merely intended to serve as a shorthand method ofreferring individually to each separate value falling within the range,unless otherwise indicated herein, and each separate value isincorporated into the specification as if it were individually recitedherein. All methods described herein can be performed in any suitableorder unless otherwise indicated herein or otherwise clearlycontradicted by context. The use of any and all examples, or exemplarylanguage (e.g., “such as”) provided herein, is intended merely to betterilluminate embodiments of the disclosure and does not pose a limitationon the scope of the disclosure unless otherwise claimed. No language inthe specification should be construed as indicating any non-claimedelement as essential to the practice of the disclosure.

What is claimed is:
 1. A computer-implemented method comprising:detecting, by a first software application, a first window beingdisplayed on a display of a host computing device, wherein the firstwindow displays graphical content, and wherein the first window isgenerated by a second software application, the second softwareapplication being a presentation-type software application; capturing,by the first software application, an image of the graphical content onthe first window; generating, by the first software application, asecond window on the display of the host computing device, wherein thesecond window is configured as a top-most window on the display, suchthat subsequent application-level and system-level window pop-ups occuron a window layer below the second window; and displaying, by the firstsoftware application, the captured image of the graphical content on thesecond window as an opaque overlay while the first window is beingdisplayed, so that the second window obscures the first window andsubsequent application-level and system-level window pop-ups.
 2. Thecomputer-implemented method of claim 1 further comprising: receivinginput data from an input device, the input data corresponding to aselection of the first window; receiving subsequent input data from theinput device; and applying the subsequent input data to the secondsoftware application on the first window when the second window isdisplayed as the top-most window on the display.
 3. Thecomputer-implemented method of claim 2 wherein the input device is atleast one of a presenting device, a computer mouse, a keyboard, orremote control.
 4. The computer-implemented method of claim 1 furthercomprising: receiving input data from an input device; causing, by thefirst software application, the second window to be transparent suchthat the first window is visible when input data is received from theinput device; capturing, by the first software application, an updatedimage of the graphical content on the first window when the input datais no longer received from the input device for a threshold time; anddisplaying, by the first software application, the captured updatedimage of the graphical content on the second window.
 5. Thecomputer-implemented method of claim 4 wherein the input data furtherincludes data corresponding to a movement of a cursor on the firstwindow; and wherein the method further comprises: changing an opacity ofthe transparent second window based on the movement of the cursor. 6.The computer-implemented method of claim 5 wherein the opacity of thetransparent second window is changed in an area around the cursor tohighlight a corresponding area of the graphical content on the firstwindow.
 7. The computer-implemented method of claim 1 further comprisingreceiving input data from an input device, wherein the image of thegraphical content on the first window is captured and displayed on thesecond window at a periodic rate when input data is not being received.8. The computer-implemented method of claim 7 wherein the input dataincludes data corresponding to a movement of a cursor on the firstwindow; and wherein the method further comprises: changing an areaaround the cursor to magnify a corresponding area of the graphicalcontent on the first window.
 9. A computer-implemented system for anuninterruptable display, the system comprising: one or more processors;and one or more non-transitory computer-readable storage mediumscontaining instructions configured to cause the one or more processorsto perform operations including: detecting, by a first softwareapplication, a first window being displayed on a display of a hostcomputing device, wherein the first window displays graphical content,and wherein the first window is generated by a second softwareapplication, the second software application being a presentation-typesoftware application; capturing, by the first software application, animage of the graphical content on the first window; generating, by thefirst software application, a second window on the display of the hostcomputing device, wherein the second window is configured as a top-mostwindow on the display, such that subsequent application-level andsystem-level window pop-ups occur on a window layer below the secondwindow; and displaying, by the first software application, the capturedimage of the graphical content on the second window as an opaque overlaywhile the first window is being displayed, so that the second windowobscures the first window and subsequent application-level andsystem-level window pop-ups.
 10. The system of claim 9 wherein the oneor more non-transitory computer-readable storage mediums further containinstructions configured to cause the one or more processors to performoperations including: receiving input data from an input device, theinput data corresponding to a selection of the first window; receivingsubsequent input data from the input device; and applying the subsequentinput data to the second application on the first window when the secondwindow is displayed as the top-most window on the display.
 11. Thesystem of claim 9 wherein the one or more non-transitorycomputer-readable storage mediums further contain instructionsconfigured to cause the one or more processors to perform operationsincluding: receiving input data from an input device; causing, by thefirst software application, the second window to be transparent suchthat the first window is visible when input data is received from theinput device; capturing, by the first software application, an updatedimage of the graphical content on the first window when the input datais no longer received from the input device for a threshold time; anddisplaying, by the first software application, the captured updatedimage of the graphical content on the second window.
 12. The system ofclaim 11 wherein the input data further includes data corresponding to amovement of a cursor on the first window; and wherein the one or morenon-transitory computer-readable storage mediums further containinstructions configured to cause the one or more processors to performoperations including: changing an opacity of the transparent secondwindow based on the movement of the cursor.
 13. The system of claim 12wherein the opacity of the transparent second window is changed in anarea around the cursor to highlight a corresponding area of thegraphical content on the on the first window.
 14. A non-transitorycomputer-program product tangibly embodied in a machine-readablenon-transitory storage medium that includes instructions configured tocause one or more processors to: detect, by a first softwareapplication, a first window being displayed on a display of a hostcomputing device, wherein the first window displays graphical content,and wherein the first window is generated by a second softwareapplication, the second software application being a presentation-typesoftware application; capture, by the first software application, animage of the graphical content on the first window; generate, by thefirst software application, a second window on the display of the hostcomputing device, wherein the second window is configured as a top-mostwindow on the display, such that subsequent application-level andsystem-level window pop-ups occur on a window layer below the secondwindow; and display, by the first software application, the capturedimage of the graphical content on the second window as an opaque overlaywhile the first window is being displayed, so that the second windowobscures the first window and subsequent application-level andsystem-level window pop-ups.
 15. The computer-program product of claim14 wherein the instructions are further configured to cause one or moreprocessors to: receive input data from an input device, the input datacorresponding to a selection of the first window; receive subsequentinput data from the input device; and apply the subsequent input data tothe second application on the first window when the second window isdisplayed as the top-most window on the display.
 16. Thecomputer-program product of claim 15 wherein the input device is atleast one of a presenting device, a computer mouse, a keyboard, orremote control.
 17. The computer-program product of claim 14 wherein theinstructions are further configured to cause one or more processors to:receive input data from an input device; cause, by the first softwareapplication, the second window to be transparent such that the firstwindow is visible when input data is received from the input device;capture, by the first software application, an updated image of thegraphical content on the first window when the input data is no longerreceived from the input device for a threshold time; and display, by thefirst software application, the captured updated image of the graphicalcontent on the second window.
 18. The computer-program product of claim17 wherein the input data further includes data corresponding to amovement of a cursor on the first window; and wherein the instructionsare further configured to cause one or more processors to: change anopacity of the transparent second window based on the movement of thecursor.
 19. The computer-program product of claim 18 wherein the opacityof the transparent second window is changed in an area around the cursorto highlight a corresponding area of the graphical content on the on thefirst window.
 20. The computer-program product of claim 14 furthercomprising receiving input data from an input device, wherein the imageof the graphical content on the first window is captured and displayedon the second window at a periodic rate when input data is not beingreceived.